#include <iostream>

#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

//struct Path{
//    int to
//};

struct Node{
//    int node_i;
    std::unordered_map<int,char> tos;
};

class OneLoop {
public:
    std::vector<Node> nodes;
    std::list<int> queue;
    bool run(int a) {
        nodes.resize(a);
        for(int i=0;i<a;i++){
            int n1,n2;std::cin>>n1>>n2;
            nodes[n1-1].tos[n2-1]=1;
            nodes[n2-1].tos[n1-1]=1;
        }
        for(int i=0;i<nodes.size();i++){
            if(nodes[i].tos.size()==1){
                queue.push_back(i);
            }
        }
        while (!queue.empty()){
            auto front=queue.front();
            if(nodes[front].tos.size()==1){
                int to=(nodes[front].tos.begin())->first;
                nodes[to].tos.erase(front);
                if(nodes[to].tos.size()==1){
                    queue.push_back(to);
                }
                nodes[front].tos.clear();
            }
            queue.pop_front();
        }
        std::vector<int> vec;
        for(int i=0;i<nodes.size();i++){
            if(nodes[i].tos.size()>0){
                vec.push_back(i+1);
            }
        }
        std::sort(vec.begin(),vec.end());
        for(auto v:vec){
            printf("%d ",v);
        }
        printf("\n");
        return true;
    }
};

class Solution {
public:
    void run() {

        bool first = true;
        int64_t a, b, c, d, e;
        char cc;
        //        std::cin >> a;
//        std::string s1,s2;
//        while (1){
        while (
                std::cin>>a
//                std::getline(std::cin,s1)
//                1
                ) {
//            std::getline(std::cin,s2);
            OneLoop l;
            if (!l.run(a)) {
//                return;
            }
        }


    }
};

int main() {

    //    bool cur_num= true;
    Solution().run();
    return 0;
}

